SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_ACTU_DETR_I01]
/*----------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.    	    --*/          
/*---Cliente              : HITEPIMA 		    --*/          
/*---Sistema              : Tesoreria               --*/          
/*---M¢dulo               : Empresa                 --*/          
/*---Programa             : Actualizacion de los    --*/          
/*---Datos del deposito Detracción hacia Compras    --*/          
/*---Nombre SP            : SP_ACTU_DETR_I01	    --*/          
/*---Desarrollado por     : Daniel Chiang 	    --*/          
/*---Fecha Creacion       : 02/04/2007              --*/          
/*---Base Datos           : Microsoft Sql Server    --*/          
/*---Versi¢n              : 8.0                     --*/          
/*---Invoca a SP          :                         --*/          
/*----------------------------------------------------*/          
/*---Modificado 1 por     :                         --*/          
/*---Fecha Modificaci¢n   :                         --*/          
/*---Detalle Modificaci¢n :                         --*/          
/*----------------------------------------------------*/          
/*---Comentarios                                    --*/          
/*---                                               --*/          
/*---                                               --*/          
/*----------------------------------------------------*/          
/* Drop Procedure SP_ACTU_DETR_I01		    --*/  
/* Grant Execute on SP_ACTU_DETR_I01 to Public   	    --*/        
/*----------------------------------------------------*/          
/*- set ANSI_NULLS on set ANSI_WARNINGS on 
Execute SP_ACTU_DETR_I01 '01', 'DETRA.TXT', 'CRE' */          
/*- '191-101-10', '2007', '03', '00300005', '03/15/2007' */          
/*----------------------------------------------------*/          
          
@ISCO_EMPR   TD_VC_002,            
@ISDE_FROM   TD_VC_100, 
@ISCO_BANC   TD_VC_003,
@ISNU_CNTA_BANC   TD_VC_020,
@ISAA_BNCO   TD_VC_004,
@ISMM_BNCO   TD_VC_002,
@ISNU_COMP_BANC TD_VC_008, 
@IDFE_OPER TD_DT_001

AS            

Declare

-- Variables para la cabecera
 @VSNU_OPER_CABE  TD_VC_020, 
 @VDFE_PAGO_CABE  TD_DT_001, 
 @VSNO_ARCH_CABE  TD_VC_030, 
 @VNIM_TOTA_CABE  TD_NU_016_004,

-- Variables para el detalle

 @CSDE_DETA TD_VC_100, 
 @VSNU_CONS_DETA  TD_VC_010, 
 @VSNU_RUCC_DETA  TD_VC_020, 
 @VNIM_DEPO_DETA  TD_NU_016_004,
 @VNNU_FETC_0001  int,
 @VNNU_SECU  int


-- Creo Tablas Temporales de Cabecera y Detalle
/*
CREATE TABLE #TWCMOB_DETR
( CO_EMPR VARCHAR(02) NULL, 
  CO_BANC VARCHAR(03) NULL, 
  NU_CNTA_BANC VARCHAR(20) NULL, 
  AA_BNCO VARCHAR(04) NULL, 
  MM_BNCO VARCHAR(02) NULL, 
  TI_MOVI_BANC VARCHAR(01) NULL, 
  NU_COMP_BANC VARCHAR(10) NULL, 
  FE_OPER DATETIME NULL,   
  NU_OPER_DETR VARCHAR(20) NULL,   
  FE_PAGO_DETR DATETIME NULL,   
  NO_ARCH_DETR VARCHAR(30) NULL,   
  IM_TOTA_DETR NUMERIC (16,4) NULL,   
  ST_VALI VARCHAR(01) NULL,   
  ST_PROC VARCHAR(01) NULL
)

*/
CREATE TABLE #TWDETA_TEMP
( DE_DETA Varchar(40)
)

/*
CREATE TABLE #TWDMOB_DETR
( CO_EMPR VARCHAR(02) NULL, 
  CO_BANC VARCHAR(03) NULL, 
  NU_CNTA_BANC VARCHAR(20) NULL, 
  AA_BNCO VARCHAR(04) NULL, 
  MM_BNCO VARCHAR(02) NULL, 
  TI_MOVI_BANC VARCHAR(01) NULL, 
  NU_COMP_BANC VARCHAR(10) NULL, 
  NU_SECU INT IDENTITY(1,1),
  NU_CONS_DETR VARCHAR(20) NULL,   
  NU_RUCS_DETR VARCHAR(20) NULL,   
  IM_MOVI_DETR NUMERIC (16,4) NULL
)

*/

-- Creo Tablas Temporales para Datos de Cabecera 

CREATE TABLE #TWTEMP_01
( NU_CAMP_01 Varchar (20) NULL )

CREATE TABLE #TWTEMP_02
( NU_CAMP_01 Datetime NULL )

CREATE TABLE #TWTEMP_03
( NU_CAMP_01 Varchar (30) NULL )


CREATE TABLE #TWTEMP_04
( NU_CAMP_01 Numeric (16,4) NULL )


-- Asigno variables leyendo directamnte del archivo txt de SUNAT

-- INICIALIZO VARIABLES 

Select @VSNU_OPER_CABE = ''
Select @VDFE_PAGO_CABE = ''
Select @VSNO_ARCH_CABE = ''
Select @VNIM_TOTA_CABE = 0.00

Begin Transaction SP_ACTU_DETR_I01

-- Numero de Operacion 

Exec ('
Insert Into #TWTEMP_01 (NU_CAMP_01)
Select SUBSTRING( [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)], 21, 10)
From OPENROWSET
 ("MSDASQL", "Driver={Microsoft Text Driver (*.txt; *.csv)};
 DefaultDir=C:\OFISIS\DETRACCIONES;","select * from '+ @ISDE_FROM + '")
where [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] is not null
and [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Numero de operacion%"' )      

-- Fecha de Operacion 

Exec ('
Insert Into #TWTEMP_02 (NU_CAMP_01)
Select CONVERT(DATETIME, SUBSTRING([SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)], 22, 10), 103)
From OPENROWSET
 ("MSDASQL", "Driver={Microsoft Text Driver (*.txt; *.csv)};
 DefaultDir=C:\OFISIS\DETRACCIONES;","select * from '+ @ISDE_FROM + '")
where [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] is not null
and [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Fecha y hora de pago%" ')


-- Nombre del Archivo 

Exec ('
Insert Into #TWTEMP_03 (NU_CAMP_01)
Select SUBSTRING( [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)], 22, 30)
From OPENROWSET
 ("MSDASQL", "Driver={Microsoft Text Driver (*.txt; *.csv)};
 DefaultDir=C:\OFISIS\DETRACCIONES;","select * from '+ @ISDE_FROM + '")
where [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] is not null
and [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Archivo%" ')


-- Importe Total del Deposito

Exec ('
Insert Into #TWTEMP_04 (NU_CAMP_01)
Select SUBSTRING( [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)], 21, 22)
From OPENROWSET
 ("MSDASQL", "Driver={Microsoft Text Driver (*.txt; *.csv)};
 DefaultDir=C:\OFISIS\DETRACCIONES;","select * from '+ @ISDE_FROM + '")
where [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] is not null
and [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Monto total%" ')


-- Asigno las variables desde las tablas temporales --

Select @VSNU_OPER_CABE = NU_CAMP_01 
From #TWTEMP_01 

Select @VDFE_PAGO_CABE = NU_CAMP_01 
From #TWTEMP_02 

Select @VSNO_ARCH_CABE = NU_CAMP_01 
From #TWTEMP_03 

Select @VNIM_TOTA_CABE = NU_CAMP_01 
From #TWTEMP_04 

--select 'xxxxx', @VSNU_OPER_CABE, @VDFE_PAGO_CABE, @VSNO_ARCH_CABE, @VNIM_TOTA_CABE

Insert into TCMOBA_DETR (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC, FE_OPER, 
NU_OPER_DETR, FE_PAGO_DETR, NO_ARCH_DETR, IM_TOTA_DETR , ST_VALI , ST_PROC  )
Values(@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, 'E', @ISNU_COMP_BANC, @IDFE_OPER, 
@VSNU_OPER_CABE, @VDFE_PAGO_CABE, @VSNO_ARCH_CABE, @VNIM_TOTA_CABE , 'N', 'N')  

If @@error != 0
   Begin
     Return
   End


-- INSERTO REGISTROS EN  LA TABLA DE DETALLE TEMPORAL --

Exec ('
Insert Into #TWDETA_TEMP(DE_DETA)
Select SUBSTRING( [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)], 1, 40)
From OPENROWSET
 ("MSDASQL", "Driver={Microsoft Text Driver (*.txt; *.csv)};
 DefaultDir=C:\OFISIS\DETRACCIONES;","select * from '+ @ISDE_FROM + '")
where [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] is not null
and ( [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Numero de constancia%" 
     OR [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%RUC Proveedor%" 
     OR [SISTEMA DE PAGO DE OBLIGACIONES TRIBUTARIAS (SPOT)] like "%Monto deposito%" )  ')

     /* Inicializo las variables */   
	   
      Select @VSNU_CONS_DETA = ''
      Select @VSNU_RUCC_DETA = ''
      Select @VNIM_DEPO_DETA = 0
      Select @VNNU_SECU = 1

      Declare CU_ACTU_DETR_I01_1 Cursor      
       For      
       Select DE_DETA
       From  #TWDETA_TEMP
       Open  CU_ACTU_DETR_I01_1;      
       Fetch CU_ACTU_DETR_I01_1 Into @CSDE_DETA
    
       Select @VNNU_FETC_0001 = @@FETCH_STATUS      
      
       While (@VNNU_FETC_0001  = 0)      
         Begin 
     		If (@VNNU_FETC_0001 < 0)      
		    Begin
	     		--RAISERROR 20001 "FIN DE ARCHIVO"      
	     		Close CU_ACTU_DETR_I01_1 
		        Deallocate  CU_ACTU_DETR_I01_1
		        Return 
	            End 
            
            /* Inicializo el las variables */   

           If PATINDEX ('%Numero de constancia%', @CSDE_DETA) = 1
	      Select @VSNU_CONS_DETA = SubString(@CSDE_DETA, 22, 8)

           If PATINDEX ('%RUC Proveedor%', @CSDE_DETA) = 1
	      Select @VSNU_RUCC_DETA = SubString(@CSDE_DETA, 20, 12)

           If PATINDEX ('%Monto deposito%', @CSDE_DETA) = 1
	      Begin

	          Select @VNIM_DEPO_DETA = convert( Numeric(16,4), SubString(@CSDE_DETA, 18, 20) )

	          Insert Into TDMOBA_DETR (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,  TI_MOVI_BANC, 
		   NU_COMP_BANC, NU_CONS_DETR, NU_RUCS_DETR, IM_MOVI_DETR, NU_SECU)
		  Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, 'E', @ISNU_COMP_BANC,
		   @VSNU_CONS_DETA, @VSNU_RUCC_DETA, @VNIM_DEPO_DETA, @VNNU_SECU  )
		 
                  If @@error != 0
		     Begin
		     	Close CU_ACTU_DETR_I01_1
			Deallocate CU_ACTU_DETR_I01_1
     			Return
   		     End
  
		  /* Inicializo las variables */   
	   
		  Select @VSNU_CONS_DETA = ''
		  Select @VSNU_RUCC_DETA = ''
		  Select @VNIM_DEPO_DETA = 0
          Select @VNNU_SECU = @VNNU_SECU + 1

	      End

           Fetch CU_ACTU_DETR_I01_1 INTO  @CSDE_DETA
           Select @VNNU_FETC_0001 = @@FETCH_STATUS      
      
          End 
         Close CU_ACTU_DETR_I01_1 
         Deallocate CU_ACTU_DETR_I01_1 

Commit TRan

Return
/********************************FIN*******************************/


GO
